package org.larkdoc.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.larkdoc.model.entity.ProjectRelUser;

/**
 * 项目与用户关系Mapper接口类
 * 
 * @author  zhangpeijun[zhangpeijun1024@qq.com]
 * @version  [v1.0.1, 2017年10月17日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
@Mapper
public interface ProjectRelUserMapper {
    /**
     * 根据ID删除数据
     * @param id
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:03:56
     */
    int deleteByPrimaryKey(Integer id);
    
    /**
     * 新增数据
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:07:19
     */
    int insert(ProjectRelUser record);
    
    /**
     * 新增记录，只记录对象非空属性
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:09:49
     */
    int insertSelective(ProjectRelUser record);
    
    /**
     * 根据ID查询数据
     * @param id
     * @return
     * 
     * @returns ProjectRelUser
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:14:02
     */
    ProjectRelUser selectByPrimaryKey(Integer id);
    
    /**
     * 根据ID更新记录，只更新参数中非空的属性
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:16:30
     */
    int updateByPrimaryKeySelective(ProjectRelUser record);
    
    /**
     * 根据ID更新记录
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:17:51
     */
    int updateByPrimaryKey(ProjectRelUser record);
    
    /*
     *  自定义SQL
     */
    
    /**
     * 根据项目ID删除项目
     * @param projectId
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日上午10:50:12
     */
    int deleteByProjectId(@Param("projectId") Integer projectId);
    
    /**
     * 批量新增
     * @param records
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日上午10:50:34
     */
    int insertBatch(List<ProjectRelUser> records);
    
    /**
     * 查询：根据项目ID查询数据
     * @param projectId
     * @return
     * 
     * @returns List<ProjectRelUser>
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日上午10:50:46
     */
    List<ProjectRelUser> queryByProjectId(@Param("projectId") Integer projectId);
    
    /**
     * 查询：根据项目ID集合查询数据
     * @param projectIds
     * @return
     * 
     * @returns List<ProjectRelUser>
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日上午10:51:14
     */
    List<ProjectRelUser> queryByProjectIds(@Param("projectIds") List<Integer> projectIds);
    
    /**
    * 检测用户是否归属项目
    * @param projectId
    * @param userId
    * @return
    * 
    * @returns Integer
    * @see [类、类#方法、类#成员]
    * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
    *          2017年12月10日下午12:15:18
    */
    Integer checkUserBelongProject(@Param("projectId") Integer projectId, @Param("userId") Integer userId);
}